package com.yunhe.policyfulfillment.policyful.service;

import com.yunhe.common.exception.ArgumentErrorException;
import com.yunhe.common.model.ResultObject;
import com.yunhe.common.model.mybatis.PageResult;
import com.yunhe.policyfulfillment.authority.model.LoginUserApplyMatterQueryCondition;
import com.yunhe.policyfulfillment.authority.model.SupplementaryMaterials;
import com.yunhe.policyfulfillment.policyful.domain.PolicyInfoApplyMatter;
import com.yunhe.policyfulfillment.policyful.model.*;
import org.springframework.http.ResponseEntity;

import java.util.List;

/**
 * @description 政策兑现企业在线申请/审批事项
 * @author hetao
 * @date 2021-08-24
 */
public interface PolicyInfoApplyMatterService {

    /**
     * 新增
     */
    public int createPolicyInfoApplyMatter(PolicyInfoApplyMatterBo policyInfoApplyMatterBo) throws ArgumentErrorException;

    /**
     * 删除
     */
    public void deletePolicyInfoApplyMatter(int id);

    /**
     * 更新
     */
    public int updatePolicyInfoApplyMatter(PolicyInfoApplyMatter policyInfoApplyMatter);

    /**
     * 根据主键 id 查询
     * @return
     */
    public PolicyInfoApplyMatterDetailVo findPolicyInfoApplyMatterById(int id);

    /**
     * 分组分页查询
     * @param queryCondition
     * @return 分组信息
     * @author 张翔宇
     * @date 2021年11月17日 11点04分
     */
    PageResult findApprovalGroupInfo(PolicyInfoApplyMatterQueryCondition queryCondition);

    /**
     * 分页查询
     * @param policyInfoApplyMatterQueryCondition
     * @return
     */
    PageResult findPolicyInfoApplyMatterByQueryCondition(PolicyInfoApplyMatterQueryCondition policyInfoApplyMatterQueryCondition) throws ArgumentErrorException;

    /**
     * 历史分组分页查询
     * @param queryCondition
     * @return
     * @author 张翔宇
     * @date 2021年11月17日14点04分
     */
    PageResult findApprovalHistoryGroupInfo(PolicyInfoApplyMatterQueryCondition queryCondition);

    /**
     * 审批历史记录分页
     * @return 分页
     * @author 张翔宇
     * @date 2021年11月15日 15点23分
     */
    PageResult findApprovalHistory(PolicyInfoApplyMatterQueryCondition queryCondition);

    /**
     * 催办
     * @param id
     */
    void urgeApplyMatter(int id) throws ArgumentErrorException;

    /**
     * 查询审批流程
     * @param id
     * @return
     */
    List<PolicyAuditProcessVo> findAuditProcessByApplyMatterId(int id);

    /**
     * 门户查询详情
     * @param portalApplyMatterQueryCondition
     * @return
     */
    PageResult getPolicyInfoApplyMatterByCondition(PortalApplyMatterQueryCondition portalApplyMatterQueryCondition);

    /**
     * 审核
     * @param auditMatterBo
     */
    void auditMatter(AuditMatterBo auditMatterBo) throws ArgumentErrorException;

    /**
     * 个人中心申请事项查询
     * @param loginUserApplyMatterQueryCondition
     * @return
     */
    PageResult findLoginUserApplyMatterByCondition(LoginUserApplyMatterQueryCondition loginUserApplyMatterQueryCondition);

    /**
     * 补充材料
     * @param supplementaryMaterials
     */
    void supplementaryMaterials(SupplementaryMaterials supplementaryMaterials) throws ArgumentErrorException;
}
